//读取信息，修改学生成绩

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main() {
    FILE *fp;
    char line[100];
    int id, score;
    char name[20];

    // 以文本方式打开文件
    if ((fp = fopen("file.txt", "r+")) == NULL) {
        fprintf(stderr, "Can't open file!\n");
        exit(1);
    }

    // 将文件指针移动到第二个学生信息所在行的位置
    // 假设每行学生信息的长度不一定相同
    while (fgets(line, sizeof(line), fp) != NULL) {
        if (strstr(line, "2 Jack 80") != NULL) {    // 目标学生信息
            // 解析该行信息为学生的 ID、姓名和成绩
            sscanf(line, "%d %s %d", &id, name, &score);

            // 输出原来的学生信息
            printf("Original Student ID: %d\n", id);
            printf("Original Student Name: %s\n", name);
            printf("Original Student Score: %d\n", score);

            // 修改成绩
            score = 90;

            // 将文件指针移动回原来的位置
            if (fseek(fp, -(long)strlen(line), SEEK_CUR) == 0) {
                // 将修改后的学生信息写回文件
                fprintf(fp, "%d %s %d\n", id, name, score);
            }

            break;
        }
    }

    // 关闭文件
    fclose(fp);

    return 0;
}
